<?php
    session_start();
    require_once("dbConnect.inc");
    require_once("errorhandler.php");
    set_error_handler("error_msg");
    
    //Reset alle sessie variabelen als op reset is geklikt
    if(isset($_POST['resetbutton'])) {
        session_unset();
        session_destroy();
        header("Location: index.php");
    }
    
    $Voornaam = NULL;
    $Tussenvoegsel = NULL;
    $Achternaam = NULL;
    $Straat = NULL;
    $Huisnummer = NULL;
    $Postcode = NULL;
    $Woonplaats = NULL;
    $Email = NULL;
    $Geboortedatum = NULL;
    $Ingangsdatum = NULL;
    $Einddatum = NULL;
    $Geslacht = NULL;
    $Sportonderdeel = NULL;
    $Lesdag = NULL;
    $adminEmail = "info@oxyo.nl";
    
    //Alle mogelijke letters en (spatie . ' -) zijn toegestaan
    $NaamPattern = "/^[\s.'-\pL]+/";
    $NummmerPattern = "/[1-9][0-9]*(([-][1-9][0-9]*)|([\s]?[a-zA-Z]+))/";
    $PostcodePattern = "/[1-9]{4}[a-zA-Z]{2}/";
    $invalidDateMessage = "Dit is een ongeldige datum.<BR /> Gebruik deze notatie: dd-mm-jjjj";
    $fieldIsEmptyMessage = "Dit is een verplicht veld";
    $invalidCharactersMessage = "Je hebt ongeldige tekens gebruikt";
    $invalidEmailAddress = "Dit is een ongeldig Email adres";
    $invalidPostcode = "Dit is een ongeldige Postcode.<BR /> Gebruik deze notatie: 1234AB";
    $allFieldsValidated = true;
    
    // Voornaam is en verplicht veld
    if (isset($_POST["Voornaam"]) AND strlen($_POST["Voornaam"]) > 0) {
            $_SESSION["Voornaam"] = $_POST["Voornaam"];
            if (!preg_match($NaamPattern, $_POST["Voornaam"])) {
                $_SESSION["VoornaamError"] = $invalidCharactersMessage;
                $allFieldsValidated = false;
            } else {
                $_SESSION["VoornaamError"] = NULL;
                $Voornaam = strip_tags($_POST["Voornaam"]);
            }
    } else {
        $_SESSION["VoornaamError"] = $fieldIsEmptyMessage;
        $allFieldsValidated = false;
    }

    // Tussenvoegsel is geen verplicht veld
    if (isset($_POST["Tussenvoegsel"]) AND strlen($_POST["Tussenvoegsel"]) > 0 ) {
        $_SESSION["Tussenvoegsel"] = $_POST["Tussenvoegsel"];
        if (!preg_match($NaamPattern, $_POST["Tussenvoegsel"])) {
            $_SESSION["TussenvoegselError"] = $invalidCharactersMessage;
            $allFieldsValidated = false;
        } else {
            $_SESSION["TussenvoegselError"] = NULL;
            $Tussenvoegsel = strip_tags($_POST["Tussenvoegsel"]);
        }
    } else {
        $_SESSION["TussenvoegselError"] = NULL;
    }
    
    // Achternaam is een verplicht veld
    if (isset($_POST["Achternaam"]) AND strlen($_POST["Achternaam"]) > 0 ) {
        $_SESSION["Achternaam"] = $_POST["Achternaam"];
        if (!preg_match($NaamPattern, $_POST["Achternaam"])) {
            $_SESSION["AchternaamError"] = $invalidCharactersMessage;
            $allFieldsValidated = false;
        } else {
            $_SESSION["AchternaamError"] = NULL;
            $Achternaam = strip_tags($_POST["Achternaam"]);
        }
    } else {
        $_SESSION["AchternaamError"] = $fieldIsEmptyMessage;
        $allFieldsValidated = false;
    }
    
    //Straat is geen verplicht veld en wordt niet gevalideerd
    if (isset($_POST["Straat"]) AND strlen($_POST["Straat"]) > 0 ) {
        $_SESSION["Straat"] = $_POST["Straat"];
        if (!preg_match($NaamPattern, $_POST["Straat"])) {
            $_SESSION["StraatError"] = $invalidCharactersMessage;
            $allFieldsValidated = false;
        } else {
            $_SESSION["StraatError"] = NULL;
            $Straat = strip_tags($_POST["Straat"]);
        }
    } else {
        $_SESSION["StraatError"] = NULL;
    }
    
    //Huisnummer is geen verplicht veld, wordt wel gevalideerd
    if (isset($_POST["Huisnummer"]) AND strlen($_POST["Huisnummer"]) > 0 ) {
        $_SESSION["Huisnummer"] = $_POST["Huisnummer"];
        if (!preg_match($NummmerPattern, $_POST["Huisnummer"])) {
            $_SESSION["HuisnummerError"] = $invalidCharactersMessage;
            $allFieldsValidated = false;
        } else {
            $_SESSION["HuisnummerError"] = NULL;
            $Huisnummer = strip_tags($_POST["Huisnummer"]);
        }
    } else {
        $_SESSION["HuisnummerError"] = NULL;
    }

    //Postcode is geen verplicht veld, wordt wel gevalideerd
    if (isset($_POST["Postcode"]) AND strlen($_POST["Postcode"]) > 0 ) {
        $_SESSION["Postcode"] = $_POST["Postcode"];
        if (!preg_match($PostcodePattern, $_POST["Postcode"])) {
            $_SESSION["PostcodeError"] = $invalidPostcode;
            $allFieldsValidated = false;
        } else {
            $_SESSION["PostcodeError"] = NULL;
            $Postcode = strip_tags($_POST["Postcode"]);
        }
    } else {
        $_SESSION["PostcodeError"] = NULL;
    }
    
    //Woonplaats is geen verplicht veld maar wordt wel gevalideerd
    if (isset($_POST["Woonplaats"]) AND strlen($_POST["Woonplaats"]) > 0 ) {
        $_SESSION["Woonplaats"] = $_POST["Woonplaats"];
        if (!preg_match($NaamPattern, $_POST["Woonplaats"])) {
            $_SESSION["WoonplaatsError"] = $invalidCharactersMessage;
            $allFieldsValidated = false;
        } else {
            $_SESSION["WoonplaatsError"] = NULL;
            $Woonplaats = strip_tags($_POST["Woonplaats"]);
        }
    } else {
        $_SESSION["WoonplaatsError"] = NULL;
    }
    
    // Email is een verplicht veld. 
    if (isset($_POST["Email"]) AND strlen($_POST["Email"]) > 0 ) {
        $_SESSION["Email"] = $_POST["Email"];
        if (!validEmail($_POST["Email"])) {
            $_SESSION["EmailError"] = $invalidEmailAddress;
            $allFieldsValidated = false;
        } else {
            $_SESSION["EmailError"] = NULL;
            $Email = $_POST["Email"];
        }
    } else {
        $_SESSION["EmailError"] = $fieldIsEmptyMessage;
        $allFieldsValidated = false;
    }
    
    // Geboortedatum is geen verplicht veld, maar als deze is ingevuld moet
    // het wel een geldige datum zijn
    if (isset($_POST["Geboortedatum"]) AND strlen($_POST["Geboortedatum"]) > 0 ) {
        $_SESSION["Geboortedatum"] = $_POST["Geboortedatum"];
        
        list($dd,$mm,$yyyy) = explode('-',$_POST["Geboortedatum"]);
        if (!checkdate($mm,$dd,$yyyy)) {
            $_SESSION["GeboortedatumError"] = $invalidDateMessage;
            $allFieldsValidated = false;
        } else {
            $_SESSION["GeboortedatumError"] = NULL;
            $Geboortedatum = "$yyyy-$mm-$dd";
        }
    } else {
        $_SESSION["GeboortedatumError"] = NULL;
    }
    
    //Ingangsdatum is een verplicht veld
    if (isset($_POST["Ingangsdatum"]) AND strlen($_POST["Ingangsdatum"]) > 0) {
        $_SESSION["Ingangsdatum"] = $_POST["Ingangsdatum"];
        
        list($dd,$mm,$yyyy) = explode('-',$_POST["Ingangsdatum"]);
        if (!checkdate($mm,$dd,$yyyy)) {
            $_SESSION["IngangsdatumError"] = $invalidDateMessage;
            $allFieldsValidated = false;
        } else {
            $_SESSION["IngangsdatumError"] = NULL;
            $Ingangsdatum = "$yyyy-$mm-$dd";
        }
    } else {
        $_SESSION["IngangsdatumError"] = $fieldIsEmptyMessage;
    }
    
    // Einddatum is geen verplicht veld, maar als deze is ingevuld moet
    // het wel een geldige datum zijn
    if (isset($_POST["Einddatum"]) AND strlen($_POST["Einddatum"]) > 0) {
        $_SESSION["Einddatum"] = $_POST["Einddatum"];
        
        list($dd,$mm,$yyyy) = explode('-',$_POST["Einddatum"]);
        if (!checkdate($mm,$dd,$yyyy)) {
            $_SESSION["EinddatumError"] = $invalidDateMessage;
            $allFieldsValidated = false;
        } else {
            $_SESSION["EinddatumError"] = NULL;
            $Einddatum = "$yyyy-$mm-$dd";
        }
    } else {
        $_SESSION["EinddatumError"] = NULL;
    }
    
    // Geslacht is geen verplicht veld
    if (isset($_POST["Geslacht"])) {
        $_SESSION["Geslacht"] = $_POST["Geslacht"];
        $Geslacht  = $_POST["Geslacht"];
    }
    
    //Sportonderdeel is een verplicht veld
    if (isset($_POST["Sportonderdeel"]) AND $_POST["Sportonderdeel"] != "Empty") {
        $_SESSION["Sportonderdeel"] = $_POST["Sportonderdeel"];
        $_SESSION["SportonderdeelError"] = NULL;
        $Sportonderdeel = $_POST["Sportonderdeel"];
    } else {
        $_SESSION["Sportonderdeel"] = NULL;
        $_SESSION["SportonderdeelError"] = $fieldIsEmptyMessage;
        $allFieldsValidated = false;
    }
    
    // Lesdag is geen verplicht veld
    if (isset($_POST["Lesdag"])) {
        $_SESSION["Lesdag"] = $_POST["Lesdag"];
        $_POST["Lesdag"]== "Empty" ? $Lesdag = "" : $Lesdag = $_POST["Lesdag"];
    }
    
    function validEmail($Email) {
      //$regex = '/([a-zA-Z]{2,})@([a-zA-Z]{2,})\.nl$/';
        $regex = '/^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$/';
      if (preg_match($regex, $Email)) {
        return true;
      } else {
        return false;
      }
    }
    
    if ($allFieldsValidated) {
        $databaseConnection = mysqli_connect($hostname, $username, $password, $database);

        if (mysqli_connect_errno()) {
            trigger_error("Het is niet gelukt om verbinding te maken met de database.", E_USER_ERROR);
            exit();
        }
        
        $qInsertMember = "INSERT INTO leden (Voornaam, Tussenvoegsel, Achternaam, Straat, Huisnummer, Postcode, 
            Woonplaats, Email, Geboortedatum, Geslacht) VALUES ('$Voornaam', '$Tussenvoegsel', '$Achternaam', 
            '$Straat', '$Huisnummer', '$Postcode', '$Woonplaats', '$Email', '$Geboortedatum', '$Geslacht')";
        
        // Sla de lidgegevens op in de database
        $queryResult = mysqli_query($databaseConnection, $qInsertMember);
        
        // Als de lidgegevens successvol zijn opgeslagen, kunnen de sportgegevens opgeslagen
        // worden voor het zojuist opgeslagen ledenid
        if ($queryResult) {
            //ID van het zojuist opgeslagen lid.
            $id = mysqli_insert_id($databaseConnection);
            
            $qInsertRegistration = "INSERT INTO lidmaatschap (LedenID, Datumingang, Datumeinde, Sportonderdeel, Lesdag)
                VALUES ('$id', '$Ingangsdatum', '$Einddatum', '$Sportonderdeel', '$Lesdag')";
            
            // Sla de sportgegevens op in de database
            $queryResult = mysqli_query($databaseConnection, $qInsertRegistration);
            
            if ($queryResult) {
                echo "<BR /><BR />Gefeliciteerd $Voornaam $Tussenvoegsel $Achternaam. Je hebt je successvol aangemeld
                    voor $Sportonderdeel.";
                $lidGegevens = <<<LID
                    Lidnummer:      $id
                    Naam:           $Voornaam $Tussenvoegsel $Achternaam
                    Adres:          $Straat $Huisnummer
                    Woonplaats:     $Postcode $Woonplaats
                    Email:          $Email
                    Geboortedatum:  $Geboortedatum
                    Ingangsdatum:   $Ingangsdatum
                    Einddatum:      $Einddatum
                    Sportonderdeel: $Sportonderdeel
                    Lesdag:         $Lesdag
LID;
                $memberSubject = "Aanmelding voor $Sportonderdeel";
                $adminSubject = "Nieuwe aanmelding voor $Sportonderdeel.";
                $memberMessage = "Je hebt je succesvol aangemeld.\r\n\r\n
                    We hebben de volgende gegevens geregistreerd:\r\n\r\n" . $lidGegevens;
                $adminMessage = "Er is een nieuwe aanmelding met de volgende gegevens:\r\n\r\n" . $lidGegevens;
                mail( $adminEmail, $adminSubject, $adminMessage );
                mail( $Email, $memberSubject, $memberMessage );
                session_unset();
            } else {
                trigger_error("Het is niet gelukt om de sport gegevens op te slaan in de database", E_USER_ERROR);
            }
        } else {
            trigger_error("Het is niet gelukt om de gebruikers gegevens op te slaan in de database", E_USER_ERROR);
        }
    } else {
        header("Location: index.php");
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<link rel="stylesheet" type="text/css" href="Standaard.css" />
        <title>Inzendopdracht 051R6 verwerk</title>
	</head>
    <body>
  </body>
</html>